"""字符串"""""
# 所有的东西都可以转换成字符串，反之不行
'''定义'''
# 字符串就是用英文的引号包括起来的文本，表达的是文本信息，在python中字符串的关键字是str
# 引号可以使用单引号或双引号还有三引号(单双三)
str1 = 'DengZe'
str2 = "DengZe"
# print(type(str1)) # <class 'str'>
# 注意事项：左右引号要一致，相同的引号不可以嵌套
strt3 = "it's a dog"
# 当字符串过长时，使用三引号，三引号可以换行，如果使用单引号或双引号换行，那么必须换行符 \
str4 = "这是一个文本信息，\
下一行的内容\
第三行的内容"
str5 = """这是一个文本信息，
下一行的内容
第三行的内容"""

'''特性'''
# 字符串是不可变数据类型，字符串是有序的，因为有序，可以索引和切片，字符串可以拼接
# 不可变
str6 = '今天还是太热了'
print(str6,id(str6)) # 1346544924976
str6 += '我要去避暑'
print(str6,id(str6)) # 1346544927888
# 有序
# 字符串从左到右，排序规则 0 -> +∞  从右到左是 -1 -> -∞,这个数字就是字符串每个一个字符的索引号
# 索引，就是根据索引号去找你要的字符
# print(str6[4])
# print(str6[-8])
# 切片就是找片段,[start:end:step]
# start代表片段的起始位置,写的索引号，默认是0
# end代表的是片段的结束位置的下一位，默认是字符串的长度，也可以是负数
# step代表的是步长，默认是1,step可以是负数,隔几个数eg:step=2时就是隔一个数取值
# print(str6[::2]) # [0:12:2] -> [::2]
# str7 = 'this is password'
# print(str7[5:7])
# print(str7[::-1])
# print(str7[-1::-1])
# print(str7[2::-1]) # iht

# 可拼接
# 可以使用 +  *  +=  去对字符串操作
# print('abc' + 'd')  # abcd
# print('abc' * 2) # abcabc
# str8 = 'abc'
# str8 += 'a'
# print(str8) # abca

'''转义字符'''
# 用一些符号来表示无法直接输入的特殊字符,比如键盘的tab键
# \n 代表换行
# \t 代表制表符 tab
# \\ 代表 \
# \' 代表 '
str9 = 'D:\notepad++'
# print(str9)
# 取消转义，使用字母 r
str10 = r'D:\notepad++'
# print(str10)

'''占位符'''
# 在字符串预留出来标记，可以将变量动态插入到字符串
# %s 字符串占位符，用于动态插入字符串数据类型
str11 = "今天太热，我要去%s" %'游泳'
# str_keyword = '游泳'
# print(str11)
str12 = '你的姓名是？用户的姓名是：%2s' # 限定传递进来的值 最低长度是2位，如果不足用空格代替,空格在左边
str13 = '你的姓名是？用户的姓名是：%-2s' # 限定传递进来的值 最低长度是2位，如果不足用空格代替,空格在右边
# print(str13%'邓')
str14 = '你的姓名是？用户的姓名是：%2.4s' %'邓泽是我啊'# 限定传递进来的值 最低长度是2位,最多是4位，不足会空格补位，多余会切片
# print(str14)

# # %d 整数占位符
# str15 = '今天的土豆是%d块一斤'
# print(str15%1) # 今天的土豆是1块一斤
# str16 = '你的学号是：%03d' # 最低长度是3位，不足用0补全
# print(str16%3) # 你的学号是：003
#
# # %f 浮点数占位符
# str17 = '今天的土豆是%f块一斤'
# print(str17%0.5) # 今天的土豆是0.500000块一斤
# str18 = '今天的土豆是%.2f块一斤' # 只保留小数点后两位
# print(str18%0.5) # 今天的土豆是0.50块一斤
#
# """格式化"""
# # 全称是格式化字符串，在字符串中使用{}进行传递变量，在字符串前边声明 f
# str19 = 'my name is '
# str20 = 'DengZe'
# str21 = f'{str19}{str20}'
# print(str21) # my name is DengZe
#
# """字符串类型常用的内置方法"""
# # 1、capitalize() 将字符串的第一个字符大写，其余小写，返回的是字符串
# str22 = 'hello World'
# print(str22.capitalize()) # Hello world
#
# # 2、split(obj) 将字符串使用obj进行切割，返回的是列表
# # obj代表是object，也就是对象，也就是任意
# print(str22.split('o')) # ['hell', ' W', 'rld']
# # 3、join(obj) 连接任意数量的字符串，返回的是字符串
# print('.'.join(str22)) # h.e.l.l.o. .W.o.r.l.d   前面字符串是分隔符，用，把他们返回
ls1 = ['hell', ' W', 'rld']
# print(''.join(ls1)) # hell Wrld  一个空的字符串.join谁，ls1
#
# # 4、replace(old_obj,new_obj) 替换字符串中某个元素/片段，返回新的字符串
# print(str22.replace('l', '2')) # he22o Wor2d
#
# # 5、format(obj) 占位函数，用{}，返回新的字符串
# str23 = 'hello {}{}'
# print(str23.format('world','!'))